#ifndef __MEDIATOR_H__
#define __MEDIATOR_H__

class Colleage;
class Mediator
{
public:
    virtual ~Mediator() = default;

    virtual void SetColleage(Colleage *a, Colleage *b) = 0;
    virtual void SendToA(std::string msg) = 0;
    virtual void SendToB(std::string msg) = 0;
protected:
    Mediator() = default;
private:
};

class ConcreteMediator : public Mediator
{
public:
    ConcreteMediator() = default;
    ~ConcreteMediator() = default;

    void SetColleage(Colleage *a, Colleage *b);
    void SendToA(std::string msg);
    void SendToB(std::string msg);
protected:
private:
    Colleage *ca_;
    Colleage *cb_;
};

#endif

